package com.wzy.checkcode.service;

import com.wzy.checkcode.model.CheckCodeParamsDto;
import com.wzy.checkcode.model.CheckCodeResultDto;

/**
 * 验证码相关业务实现类
 */
public interface CheckCodeService {


    /**
     * 生成验证码
     * @param checkCodeParamsDto 验证码相关参数
     * @return 验证码生成结果
     */
     CheckCodeResultDto generate(CheckCodeParamsDto checkCodeParamsDto);

    /**
     * 校验验证码
     * @param key 验证码key
     * @param code 验证码数字
     * @return
     */
    public boolean verify(String key, String code);


    /**
     * 验证码生成器（数字字母生成器）
     */
    public interface CheckCodeGenerator{
        /**
         * 验证码生成
         * @return 验证码
         */
        String generate(int length);
        

    }

    /**
     * 验证码标识key的生成器（uuid）
     */
    public interface KeyGenerator{

        /**
         * key生成
         * @return 验证码
         */
        String generate(String prefix);
    }


    /**
     * 验证码存储（存储到redis中，有过期时间）
     */
    public interface CheckCodeStore{

        /**
         * @description 向缓存设置key
         * @param key key
         * @param value value
         * @param expire 过期时间,单位秒
        */
        void set(String key, String value, Integer expire);

        String get(String key);

        void remove(String key);
    }
}
